package Verwaltung.Daten;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class LehrerTest {

	/**
	 * LEHRER KONSTRUKTOR TEST I Gueltige Eingabe I. Login II. Wochenstunden
	 * III. Name IV. Passwort V. Permission Level
	 */
	@Test
	public void test_lehrer_konstruktor_1() {
		final Lehrer l1 = new Lehrer("hans", 30, "hans peter", "peter", 1);
		// I.
		assertEquals("login", l1.getLoginName(), "hans");
		// II.
		assertEquals("wochenstunden", l1.getWochenstunden(), 30);
		// III.
		assertEquals("name", l1.getName(), "hans peter");
		// IV.
		assertEquals("passwort", l1.getPassword(), "peter");
		// V.
		assertEquals("permission level", l1.getPermissionLvl(), 1);
	}

	/**
	 * LEHRER KONSTRUKTOR TEST II Ungueltige Eingabe I. Login zu kurz II.
	 * Wochenstunden zu hoch III. Name zu kurz IV. Passwort zu kurz V.
	 * Permission Level ungueltig
	 */
	@Test(expected = IllegalArgumentException.class)
	public void lehrer_konstruktor_2() {
		// I.
		final Lehrer l2 = new Lehrer("h", 30, "hans peter", "peter", 1);
	}

	@Test(expected = IllegalArgumentException.class)
	public void lehrer_konstruktor_3() {
		// II.
		final Lehrer l3 = new Lehrer("hans", 71, "hans peter", "peter", 1);
	}

	@Test(expected = IllegalArgumentException.class)
	public void lehrer_konstruktor_4() {
		// III.
		final Lehrer l4 = new Lehrer("hans", 30, "hp", "peter", 1);
	}

	@Test(expected = IllegalArgumentException.class)
	public void lehrer_konstruktor_5() {
		// IV.
		final Lehrer l5 = new Lehrer("hans", 30, "hans peter", "p", 1);
	}

	@Test(expected = IllegalArgumentException.class)
	public void lehrer_konstruktor_6() {
		// V.
		final Lehrer l6 = new Lehrer("hans", 30, "hans peter", "peter", 100);
	}

	/**
	 * SETNAME TEST I Gueltige Eingabe I. "herbert"
	 */
	@Test
	public void lehrer_setName_1() {
		// I.
		final Lehrer l7 = new Lehrer("hans", 30, "hans peter", "peter", 1);
		l7.setName("herbert");
		assertEquals("name", l7.getName(), "herbert");
	}

	/**
	 * SETNAME TEST II Ungueltige Eingabe II. "h"
	 */
	@Test(expected = IllegalArgumentException.class)
	public void lehrer_setName_2() {
		// I.
		final Lehrer l8 = new Lehrer("hans", 30, "hans peter", "peter", 1);
		l8.setName("h");
	}

	/**
	 * SETLOGIN TEST I Gueltige Eingabe I. "herbert"
	 */
	@Test
	public void lehrer_setLogin_1() {
		// I.
		final Lehrer l9 = new Lehrer("hans", 30, "hans peter", "peter", 1);
		l9.setLogin("herbert");
		assertEquals("login", l9.getLoginName(), "herbert");
	}

	/**
	 * SETLOGIN TEST II Ungueltige Eingabe I. "h"
	 */
	@Test(expected = IllegalArgumentException.class)
	public void lehrer_setLogin_2() {
		// I.
		final Lehrer l10 = new Lehrer("hans", 30, "hans peter", "peter", 1);
		l10.setLogin("h");
	}

	/**
	 * SETWOCHENSTUNDEN TEST I Gueltige Eingabe I. 15
	 */
	@Test
	public void lehrer_setWochenstunden_1() {
		// I.
		final Lehrer l11 = new Lehrer("hans", 30, "hans peter", "peter", 1);
		l11.setArbeitsstunden(15);
		assertEquals("wochenstunden", l11.getWochenstunden(), 15);
	}

	/**
	 * SETWOCHENSTUNDEN TEST II Ungueltige Eingabe I. 300
	 */
	@Test(expected = IllegalArgumentException.class)
	public void lehrer_setWochenstunden() {
		// I.
		final Lehrer l12 = new Lehrer("hans", 30, "hans peter", "peter", 1);
		l12.setArbeitsstunden(300);
	}

	/**
	 * SETPASSWORT TEST I Gueltige Eingabe I. herbert
	 */
	@Test
	public void lehrer_setPassword_1() {
		// I.
		final Lehrer l13 = new Lehrer("hans", 30, "hans peter", "peter", 1);
		l13.setPassword("herbert");
		assertEquals("pwasswort", l13.getPassword(), "herbert");
	}

	/**
	 * SETPASSWORT TEST II Ungueltige Eingabe I. h
	 */
	@Test(expected = IllegalArgumentException.class)
	public void lehrer_setPasswort_2() {
		// I.
		final Lehrer l14 = new Lehrer("hans", 30, "hans peter", "peter", 1);
		l14.setPassword("h");
	}

	/**
	 * SETPERMISSIONLEVEL TEST I Gueltige Eingabe I. 0
	 */
	@Test
	public void lehrer_setPermissionlvl_1() {
		// I.
		final Lehrer l15 = new Lehrer("hans", 30, "hans peter", "peter", 1);
		l15.setPermissionLvl(0);
		assertEquals("permission level", l15.getPermissionLvl(), 0);
	}

	/**
	 * SETPERMISSIONLEVEL TEST II Ungueltige Eingabe I. 100
	 */
	@Test(expected = IllegalArgumentException.class)
	public void lehrer_setPermissionlvl_2() {
		// I.
		final Lehrer l16 = new Lehrer("hans", 30, "hans peter", "peter", 1);
		l16.setPermissionLvl(100);
	}

}
